package manager.modulo.funcionario.fonte;

import java.sql.SQLException;
import java.util.LinkedList;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
import manager.auxiliares.*;
import manager.helpers.validation.FormatedFieldValidator;
import manager.helpers.validation.TextFieldValidator;
import manager.helpers.validation.ValidationFunctions;
import manager.modulo.funcionario.dao.FuncionarioDao;
import manager.modulo.funcionario.enumerator.EnumEscolaridade;
import manager.modulo.funcionario.enumerator.EnumEscolaridade.Escolaridade;
import manager.modulo.funcionario.enumerator.EnumEstadoCivil;
import manager.modulo.funcionario.enumerator.EnumEstadoCivil.EstadoCivil;
import manager.modulo.funcionario.enumerator.EnumSexo;
import manager.modulo.funcionario.enumerator.EnumSexo.Sexo;
import manager.modulo.funcionario.enumerator.EnumSituacaoFuncionario;
import manager.modulo.funcionario.enumerator.EnumSituacaoFuncionario.SituacaoFuncionario;
import manager.principal.fonte.PainelEndereco;
import manager.principal.fonte.JanelaLogin;
import manager.principal.dao.EnderecoDao;
import manager.principal.dao.EstadoDao;
import manager.principal.dao.ProfissaoDao;

/**
 *
 * @author Thiago
 */
public class JanelaFuncionario extends javax.swing.JFrame {

    int idFuncionario = 0;
    PainelEndereco painelEndereco;

    /**
     * Creates new form UserWindow
     */
    public JanelaFuncionario(int newIdPartner) {
        try {
            // Define layout de acordo com o SO que estiver rodando
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            this.setIconImage(JanelaLogin.icon);
            initComponents();
            idFuncionario = newIdPartner;
            configureWindow();
            this.setLocationRelativeTo(null);
            this.setVisible(true);

        } catch (Exception e) {
            MensagemExcessao.mostrarMensagem(e, "Funcionários");
        }
    }

    private void configurarCamposObrigatorios() {
        ((TextFieldValidator) jTextField5).validarCampo();//Nome
        ((TextFieldValidator) jTextField17).validarCampo();//Identificador
        ((TextFieldValidator) jTextField12).validarCampo();//Pai
        ((TextFieldValidator) jTextField14).validarCampo();//Mae
        ((TextFieldValidator) jTextField1).validarCampo();//Naturalidade
        ((FormatedFieldValidator) jFormattedTextField5).validarCampo();//Data de Nascimento
        ((TextFieldValidator) jTextField2).validarCampo();//Carteira de Trabalho
        ((TextFieldValidator) jTextField3).validarCampo();//Serie
        ((TextFieldValidator) jTextField4).validarCampo();//Pis
        ((FormatedFieldValidator) jFormattedTextField1).validarCampo();//CPF
        ((TextFieldValidator) jTextField6).validarCampo();//Identidade
        ((TextFieldValidator) jTextField7).validarCampo();//Orgão Emissor
        ((FormatedFieldValidator) jFormattedTextField2).validarCampo();//Data Emissão
        ((TextFieldValidator) jTextField8).validarCampo();//Titulo Eleitoral
        ((TextFieldValidator) jTextField9).validarCampo();//Zona Eleitoral
        ((TextFieldValidator) jTextField10).validarCampo();//Seção
        ((TextFieldValidator) jTextField11).validarCampo();//Reservista
        ((TextFieldValidator) jTextField13).validarCampo();//Serie
        ((TextFieldValidator) jTextField15).validarCampo();//Categoria
    }

    private LinkedList<String> validarCampos() {
        LinkedList<String> fieldList = new LinkedList<String>();
        if (!((TextFieldValidator) jTextField5).validarCampo()) {//Nome
            fieldList.add(((TextFieldValidator) jTextField5).getjLabel().getText());
        }
        if (!((TextFieldValidator) jTextField17).validarCampo()) {//Identificador
            fieldList.add(((TextFieldValidator) jTextField17).getjLabel().getText());
        }
        if (!((TextFieldValidator) jTextField12).validarCampo()) {//Pai
            fieldList.add(((TextFieldValidator) jTextField12).getjLabel().getText());
        }
        if (!((TextFieldValidator) jTextField1).validarCampo()) {//Mãe
            fieldList.add(((TextFieldValidator) jTextField1).getjLabel().getText());
        }
        if (!((TextFieldValidator) jTextField14).validarCampo()) {//Naturalidade
            fieldList.add(((TextFieldValidator) jTextField14).getjLabel().getText());
        }
        if (!((FormatedFieldValidator) jFormattedTextField5).validarCampo()) {//Data de Nascimento
            fieldList.add(((FormatedFieldValidator) jFormattedTextField5).getjLabel().getText());
        }
        if (!((TextFieldValidator) jTextField2).validarCampo()) {//Carteira de Trabalho
            fieldList.add(((TextFieldValidator) jTextField2).getjLabel().getText());
        }
        if (!((TextFieldValidator) jTextField3).validarCampo()) {//Serie
            fieldList.add(((TextFieldValidator) jTextField3).getjLabel().getText());
        }
        if (!((TextFieldValidator) jTextField4).validarCampo()) {//Pis
            fieldList.add(((TextFieldValidator) jTextField4).getjLabel().getText());
        }
        if (!((FormatedFieldValidator) jFormattedTextField1).validarCampo()) {//CPF
            fieldList.add(((FormatedFieldValidator) jFormattedTextField1).getjLabel().getText());
        }
        if (!((TextFieldValidator) jTextField6).validarCampo()) {//Identidade
            fieldList.add(((TextFieldValidator) jTextField6).getjLabel().getText());
        }
        if (!((TextFieldValidator) jTextField7).validarCampo()) {//Orgão Emissor
            fieldList.add(((TextFieldValidator) jTextField7).getjLabel().getText());
        }
        if (!((FormatedFieldValidator) jFormattedTextField2).validarCampo()) {//Data Emissão
            fieldList.add(((FormatedFieldValidator) jFormattedTextField2).getjLabel().getText());
        }
        if (!((TextFieldValidator) jTextField8).validarCampo()) {//Titulo Eleitoral
            fieldList.add(((TextFieldValidator) jTextField8).getjLabel().getText());
        }
        if (!((TextFieldValidator) jTextField9).validarCampo()) {//Zona Eleitoral
            fieldList.add(((TextFieldValidator) jTextField9).getjLabel().getText());
        }
        if (!((TextFieldValidator) jTextField10).validarCampo()) {//Seção
            fieldList.add(((TextFieldValidator) jTextField10).getjLabel().getText());
        }
        if (!((TextFieldValidator) jTextField11).validarCampo()) {//Reservista
            fieldList.add(((TextFieldValidator) jTextField11).getjLabel().getText());
        }
        if (!((TextFieldValidator) jTextField13).validarCampo()) {//Serie
            fieldList.add(((TextFieldValidator) jTextField13).getjLabel().getText());
        }
        if (!((TextFieldValidator) jTextField15).validarCampo()) {//Categoria
            fieldList.add(((TextFieldValidator) jTextField15).getjLabel().getText());
        }
        return fieldList;
    }

    private void carregarInformacoes() {
        jButton1.setText("Editar");
        jButton1.setIcon(new Icons().getEdit());

        FuncionarioDao funcionarioDao = new FuncionarioDao();
        funcionarioDao.buscar(idFuncionario);

        jTextField5.setText(funcionarioDao.getNome());//Nome
        jTextField17.setText(funcionarioDao.getIdentificador());//Identificador
        jTextField12.setText(funcionarioDao.getNomePai());//Pai
        jTextField14.setText(funcionarioDao.getNomeMae());//Mae
        jTextField1.setText(funcionarioDao.getNaturalidade());//Naturalidade
        jFormattedTextField5.setText(Format.formatarTimeStampApresentacao(funcionarioDao.getDataNascimento()));//Data de Nascimento
        jTextField2.setText(funcionarioDao.getCarteiraTrabalho());//Carteira de Trabalho
        jTextField3.setText(funcionarioDao.getSerieCT());//Serie
        jTextField4.setText(funcionarioDao.getPis());//Pis
        jFormattedTextField1.setText(Format.formatarBancoCpf(funcionarioDao.getCpf()));//CPF
        jTextField6.setText(funcionarioDao.getIdentidade());//Identidade
        jTextField7.setText(funcionarioDao.getOrgaoEmissor());//Orgão Emissor
        jFormattedTextField2.setText(Format.formatarTimeStampApresentacao(funcionarioDao.getDataEmissao()));//Data Emissão
        jTextField8.setText(funcionarioDao.getTituloEleitoral());//Titulo Eleitoral
        jTextField9.setText(funcionarioDao.getZona());//Zona Eleitoral
        jTextField10.setText(funcionarioDao.getSecao());//Seção
        jTextField11.setText(funcionarioDao.getReservista());//Reservista
        jTextField13.setText(funcionarioDao.getSerieCT());//Serie
        jTextField15.setText(funcionarioDao.getCategoriaReservista());//Categoria
        jTextField16.setText(funcionarioDao.getNomeConjuge()); // Nome Conjugue
        jTextField18.setText(funcionarioDao.getTelefone()); // Telefone
        jComboBox1.setSelectedItem(EstadoDao.getNomeEstadoPorId(funcionarioDao.getIdEstadoIdentidade()));
        jComboBox2.setSelectedItem(EstadoDao.getNomeEstadoPorId(funcionarioDao.getIdEstadoTituloEleitor()));
        jComboBox3.setSelectedItem(EnumSexo.ConvertEnumString(funcionarioDao.getSexo()));
        jComboBox4.setSelectedItem(EnumEstadoCivil.ConvertEnumString(funcionarioDao.getEstadoCivil()));
        jComboBox7.setSelectedItem(EnumEscolaridade.ConvertEnumString(funcionarioDao.getEscolaridade()));
        jComboBox5.setSelectedItem(ProfissaoDao.getNomeProfissaoPorId(funcionarioDao.getIdProfissao()));
        jComboBox6.setSelectedItem(EnumSituacaoFuncionario.ConvertEnumString(funcionarioDao.getSituacao()));

        if (funcionarioDao.getIdEndereco() != 0) {
            painelEndereco.carregarInformacoes(funcionarioDao.getIdEndereco());
        }
    }

    private FuncionarioDao configurarFuncionarioDao(boolean editar) {
        FuncionarioDao funcionarioDao = new FuncionarioDao();
        if (editar) {
            funcionarioDao.buscar(idFuncionario);
        }
        funcionarioDao.setNome(jTextField5.getText());
        funcionarioDao.setNomePai(jTextField12.getText());
        funcionarioDao.setNomeMae(jTextField14.getText());
        funcionarioDao.setNaturalidade(jTextField1.getText());
        funcionarioDao.setDataNascimento(Format.formatVisualDateToTimestamp(jFormattedTextField5.getText()));
        funcionarioDao.setCarteiraTrabalho(jTextField2.getText());
        funcionarioDao.setSerieCT(jTextField3.getText());
        funcionarioDao.setPis(jTextField4.getText());
        funcionarioDao.setCpf(Format.formatCpfToDatabase(jFormattedTextField1.getText()));
        funcionarioDao.setIdentidade(jTextField6.getText());
        funcionarioDao.setOrgaoEmissor(jTextField7.getText());
        funcionarioDao.setIdEstadoIdentidade(EstadoDao.getIdEstadoPorNome(jComboBox1.getSelectedItem().toString()));
        funcionarioDao.setDataEmissao(Format.formatVisualDateToTimestamp(jFormattedTextField2.getText()));
        funcionarioDao.setTituloEleitoral(jTextField8.getText());
        funcionarioDao.setIdEstadoTituloEleitor(EstadoDao.getIdEstadoPorNome(jComboBox2.getSelectedItem().toString()));
        funcionarioDao.setZona(jTextField9.getText());
        funcionarioDao.setSecao(jTextField10.getText());
        funcionarioDao.setReservista(jTextField11.getText());
        funcionarioDao.setSerieCT(jTextField13.getText());
        funcionarioDao.setCategoriaReservista(jTextField15.getText());
        funcionarioDao.setSexo(EnumSexo.ConvertStringEnum(jComboBox3.getSelectedItem().toString()));
        funcionarioDao.setEstadoCivil(EnumEstadoCivil.ConvertStringEnum(jComboBox4.getSelectedItem().toString()));
        funcionarioDao.setNomeConjuge(jTextField16.getText());
        funcionarioDao.setEscolaridade(EnumEscolaridade.ConvertStringEnum(jComboBox7.getSelectedItem().toString()));
        funcionarioDao.setIdProfissao(ProfissaoDao.getIdProfissaoPorNome(jComboBox5.getSelectedItem().toString()));
        funcionarioDao.setIdentificador(jTextField17.getText());
        funcionarioDao.setSituacao(EnumSituacaoFuncionario.ConvertStringEnum(jComboBox6.getSelectedItem().toString()));
        funcionarioDao.setTelefone(jTextField18.getText());

        return funcionarioDao;
    }

    private void adicionarFuncionario() {
        try {
            int idFuncionarioIdentificador = FuncionarioDao.getIdFuncionarioByIdentificador(jTextField17.getText());
            int idFuncionarioCPF = FuncionarioDao.getIdFuncionarioByCPF(Format.formatCpfToDatabase(jFormattedTextField1.getText()));
            if (idFuncionarioIdentificador == 0 && idFuncionarioCPF == 0) {
                try {
                    JanelaLogin.connection.setAutoCommit(false);

                    FuncionarioDao funcionarioDao = configurarFuncionarioDao(false);

                    if (painelEndereco.estaSelecionado()) {
                        EnderecoDao enderecoDao = painelEndereco.getEndereco();
                        enderecoDao.inserir();
                        funcionarioDao.setIdEndereco(enderecoDao.getId());
                    } else {
                        funcionarioDao.setIdEndereco(0);
                    }
                    funcionarioDao.inserir();

                    JanelaLogin.connection.commit();

                    JOptionPane.showMessageDialog(null, "Funcionários cadastrado com sucesso.", this.getTitle(), JOptionPane.INFORMATION_MESSAGE);
                    this.dispose();
                } catch (Exception e) {
                    JanelaLogin.connection.rollback();
                    MensagemExcessao.mostrarMensagem(e, "Inserção de Funcionários");
                } finally {
                    JanelaLogin.connection.setAutoCommit(true);
                }
            } else {
                JOptionPane.showMessageDialog(null, "Este funcionários já esta cadastrado.", this.getTitle(), JOptionPane.ERROR_MESSAGE);
            }
        } catch (Exception ex) {
            MensagemExcessao.mostrarMensagem(ex, "Inserção de parceiros");
        }
    }

    private void editarFuncionario() {
        try {
            int idFuncionarioIdentificador = FuncionarioDao.getIdFuncionarioByIdentificador(jTextField17.getText());
            int idFuncionarioCPF = FuncionarioDao.getIdFuncionarioByCPF(Format.formatCpfToDatabase(jFormattedTextField1.getText()));
            if ((idFuncionarioIdentificador == 0 && idFuncionarioCPF == 0)
                    || (idFuncionarioIdentificador == idFuncionario && idFuncionarioCPF == 0)
                    || (idFuncionarioIdentificador == 0 && idFuncionarioCPF == idFuncionario)
                    || (idFuncionarioIdentificador == idFuncionario && idFuncionarioCPF == idFuncionario)) {
                try {
                    JanelaLogin.connection.setAutoCommit(false);

                    FuncionarioDao funcionarioDao = configurarFuncionarioDao(true);

                    int idEnderecoAntigo = funcionarioDao.getIdEndereco();
                    if (painelEndereco.estaSelecionado()) {
                        EnderecoDao enderecoDao = painelEndereco.getEndereco();
                        enderecoDao.inserir();
                        funcionarioDao.setIdEndereco(enderecoDao.getId());
                    } else {
                        funcionarioDao.setIdEndereco(0);
                    }

                    funcionarioDao.atualizar();

                    if (idEnderecoAntigo != 0) {
                        EnderecoDao enderecoDao = new EnderecoDao();
                        enderecoDao.buscar(idEnderecoAntigo);
                        enderecoDao.deletar();
                    }

                    JanelaLogin.connection.commit();

                    JOptionPane.showMessageDialog(null, "Funcionários atualizado com sucesso.", this.getTitle(), JOptionPane.INFORMATION_MESSAGE);
                    this.dispose();
                } catch (Exception e) {
                    JanelaLogin.connection.rollback();
                    MensagemExcessao.mostrarMensagem(e, "Atualização de Funcionários");
                } finally {
                    JanelaLogin.connection.setAutoCommit(true);
                }
            } else {
                JOptionPane.showMessageDialog(null, "Este funcionários já esta cadastrado.", this.getTitle(), JOptionPane.ERROR_MESSAGE);
            }
        } catch (Exception ex) {
            MensagemExcessao.mostrarMensagem(ex, this.getTitle());
        }
    }

    /**
     * Inicializando as configurações da tela
     *
     * @throws SQLException
     */
    private void configureWindow() throws SQLException {
        painelEndereco = new PainelEndereco();
        jPanel1.add(painelEndereco);
        painelEndereco.setBounds(200, 220, 620, 181);

        LinkedList<SituacaoFuncionario> listaSituacao = EnumSituacaoFuncionario.ListaSituacao();
        for (int i = 0; i < listaSituacao.size(); i++) {
            jComboBox6.addItem(EnumSituacaoFuncionario.ConvertEnumString(listaSituacao.get(i)));
        }

        LinkedList<Sexo> listaSexo = EnumSexo.ListaSexo();
        for (int i = 0; i < listaSexo.size(); i++) {
            jComboBox3.addItem(EnumSexo.ConvertEnumString(listaSexo.get(i)));
        }

        LinkedList<EstadoCivil> listaEstadoCivil = EnumEstadoCivil.ListaEstadoCivil();
        for (int i = 0; i < listaEstadoCivil.size(); i++) {
            jComboBox4.addItem(EnumEstadoCivil.ConvertEnumString(listaEstadoCivil.get(i)));
        }

        LinkedList<Escolaridade> listaEscolaridade = EnumEscolaridade.ListaEscolaridade();
        for (int i = 0; i < listaEscolaridade.size(); i++) {
            jComboBox7.addItem(EnumEscolaridade.ConvertEnumString(listaEscolaridade.get(i)));
        }

        Format.formatarComboBoxUf(jComboBox1, "RN");
        Format.formatarComboBoxUf(jComboBox2, "RN");
        Format.formatarComboBoxProfissao(jComboBox5, "");

        if (idFuncionario != 0) { // Edição de usuário
            carregarInformacoes();
        } else {
            this.configurarCamposObrigatorios();
        }
        if (jTextField1.isVisible()) {
            jTextField1.requestFocus();
        } else {
            jTextField3.requestFocus();
        }

    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        buttonGroup1 = new javax.swing.ButtonGroup();
        jPanel3 = new javax.swing.JPanel();
        jPanel1 = new javax.swing.JPanel();
        jButton6 = new javax.swing.JButton();
        jButton1 = new javax.swing.JButton();
        jLabel18 = new javax.swing.JLabel();
        jLabel19 = new javax.swing.JLabel();
        jLabel20 = new javax.swing.JLabel();
        jLabel21 = new javax.swing.JLabel();
        jLabel22 = new javax.swing.JLabel();
        jLabel23 = new javax.swing.JLabel();
        jLabel24 = new javax.swing.JLabel();
        jLabel25 = new javax.swing.JLabel();
        jLabel26 = new javax.swing.JLabel();
        jLabel27 = new javax.swing.JLabel();
        jLabel28 = new javax.swing.JLabel();
        jLabel29 = new javax.swing.JLabel();
        jLabel30 = new javax.swing.JLabel();
        jLabel31 = new javax.swing.JLabel();
        jLabel32 = new javax.swing.JLabel();
        jLabel33 = new javax.swing.JLabel();
        jLabel34 = new javax.swing.JLabel();
        jLabel35 = new javax.swing.JLabel();
        jLabel36 = new javax.swing.JLabel();
        jLabel37 = new javax.swing.JLabel();
        jLabel38 = new javax.swing.JLabel();
        jLabel39 = new javax.swing.JLabel();
        jLabel40 = new javax.swing.JLabel();
        jLabel41 = new javax.swing.JLabel();
        jLabel42 = new javax.swing.JLabel();
        jTextField5 = new TextFieldValidator(100, 5, true, true, "text", jLabel18);
        jTextField12 = new TextFieldValidator(100, 5, true, true, "text", jLabel19);
        jLabel43 = new javax.swing.JLabel();
        jTextField14 = new TextFieldValidator(100, 5, true, true, "text", jLabel20);
        jFormattedTextField5 = new FormatedFieldValidator(true, true, "date", jLabel21);
        jTextField1 = new TextFieldValidator(100, 5, true, true, "text", jLabel42);
        jTextField2 = new TextFieldValidator(20, -1, true, true, "text", jLabel22);
        jTextField3 = new TextFieldValidator(20, -1, true, true, "text", jLabel23);
        jTextField4 = new TextFieldValidator(20, -1, true, true, "text", jLabel34);
        jFormattedTextField1 = new FormatedFieldValidator(true, true, "cpf", jLabel24);
        jTextField6 = new TextFieldValidator(20, -1, true, true, "text", jLabel25);
        jTextField7 = new TextFieldValidator(40, -1, true, true, "text", jLabel26);
        jComboBox1 = new javax.swing.JComboBox();
        jFormattedTextField2 = new FormatedFieldValidator(true, true, "date", jLabel27);
        jTextField8 = new TextFieldValidator(12, -1, true, true, "text", jLabel28);
        jComboBox2 = new javax.swing.JComboBox();
        jComboBox3 = new javax.swing.JComboBox();
        jTextField9 = new TextFieldValidator(4, -1, true, true, "text", jLabel29);
        jTextField10 = new TextFieldValidator(4, -1, true, true, "text", jLabel30);
        jTextField11 = new TextFieldValidator(20, -1, true, true, "text", jLabel31);
        jTextField13 = new TextFieldValidator(2, -1, true, true, "text", jLabel32);
        jTextField15 = new TextFieldValidator(2, -1, true, true, "text", jLabel33);
        jComboBox4 = new javax.swing.JComboBox();
        jTextField16 = new TextFieldValidator(100, -1, false, true, "text", jLabel38);
        jComboBox5 = new javax.swing.JComboBox();
        jComboBox6 = new javax.swing.JComboBox();
        jTextField17 = new TextFieldValidator(50, 3, true, true, "text", jLabel43);
        jLabel1 = new javax.swing.JLabel();
        jComboBox7 = new javax.swing.JComboBox();
        jLabel44 = new javax.swing.JLabel();
        jTextField18 = new TextFieldValidator(12, -1, false, true, "text", jLabel44);

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Funcionários");
        setBackground(Configurations.getBackGroundColor());
        setMinimumSize(new java.awt.Dimension(620, 390));
        addComponentListener(new java.awt.event.ComponentAdapter() {
            public void componentResized(java.awt.event.ComponentEvent evt) {
                formComponentResized(evt);
            }
        });

        jPanel3.setBackground(Configurations.getBackGroundColor());
        jPanel3.setPreferredSize(new java.awt.Dimension(700, 320));
        jPanel3.setLayout(null);

        jPanel1.setBackground(Configurations.getBackGroundColor());
        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
        jPanel1.setLayout(null);

        jButton6.setIcon(new javax.swing.ImageIcon(getClass().getResource("/manager/images/cancel.png"))); // NOI18N
        jButton6.setText("Cancelar");
        jButton6.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton6ActionPerformed(evt);
            }
        });
        jPanel1.add(jButton6);
        jButton6.setBounds(140, 380, 100, 23);

        jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/manager/images/add.png"))); // NOI18N
        jButton1.setText("Cadastrar");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        jPanel1.add(jButton1);
        jButton1.setBounds(20, 380, 100, 23);

        jLabel18.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel18.setText("Nome");
        jPanel1.add(jLabel18);
        jLabel18.setBounds(20, 20, 40, 14);

        jLabel19.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel19.setText("Nome do Pai");
        jPanel1.add(jLabel19);
        jLabel19.setBounds(275, 20, 90, 14);

        jLabel20.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel20.setText("Nome da Mãe");
        jPanel1.add(jLabel20);
        jLabel20.setBounds(530, 20, 80, 14);

        jLabel21.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel21.setText("Data de Nascimento");
        jPanel1.add(jLabel21);
        jLabel21.setBounds(20, 70, 120, 14);

        jLabel22.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel22.setText("Carteira de Trabalho");
        jPanel1.add(jLabel22);
        jLabel22.setBounds(145, 70, 130, 14);

        jLabel23.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel23.setText("Serie");
        jPanel1.add(jLabel23);
        jLabel23.setBounds(280, 70, 29, 14);

        jLabel24.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel24.setText("CPF");
        jPanel1.add(jLabel24);
        jLabel24.setBounds(470, 70, 20, 14);

        jLabel25.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel25.setText("Identidade");
        jPanel1.add(jLabel25);
        jLabel25.setBounds(595, 70, 80, 14);

        jLabel26.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel26.setText("Orgão Emissor");
        jPanel1.add(jLabel26);
        jLabel26.setBounds(705, 70, 90, 14);

        jLabel27.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel27.setText("Data de Emissão");
        jPanel1.add(jLabel27);
        jLabel27.setBounds(845, 70, 100, 14);

        jLabel28.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel28.setText("Titulo Eleitoral");
        jPanel1.add(jLabel28);
        jLabel28.setBounds(20, 120, 100, 14);

        jLabel29.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel29.setText("Zona");
        jPanel1.add(jLabel29);
        jLabel29.setBounds(170, 120, 28, 14);

        jLabel30.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel30.setText("Seção");
        jPanel1.add(jLabel30);
        jLabel30.setBounds(215, 120, 34, 14);

        jLabel31.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel31.setText("Reservista");
        jPanel1.add(jLabel31);
        jLabel31.setBounds(270, 120, 80, 14);

        jLabel32.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel32.setText("Série");
        jPanel1.add(jLabel32);
        jLabel32.setBounds(385, 120, 29, 14);

        jLabel33.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel33.setText("Categoria");
        jPanel1.add(jLabel33);
        jLabel33.setBounds(440, 120, 60, 14);

        jLabel34.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel34.setText("Pis");
        jPanel1.add(jLabel34);
        jLabel34.setBounds(355, 70, 40, 14);

        jLabel35.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel35.setText("Situação");
        jPanel1.add(jLabel35);
        jLabel35.setBounds(835, 170, 50, 14);

        jLabel36.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel36.setText("Sexo");
        jPanel1.add(jLabel36);
        jLabel36.setBounds(505, 120, 28, 14);

        jLabel37.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel37.setText("Estado Civil");
        jPanel1.add(jLabel37);
        jLabel37.setBounds(600, 120, 70, 14);

        jLabel38.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel38.setText("Nome Conjuge");
        jPanel1.add(jLabel38);
        jLabel38.setBounds(695, 120, 90, 14);

        jLabel39.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jLabel39.setText("Profissão");
        jPanel1.add(jLabel39);
        jLabel39.setBounds(235, 170, 170, 14);

        jLabel40.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel40.setText("UF");
        jPanel1.add(jLabel40);
        jLabel40.setBounds(800, 70, 14, 14);

        jLabel41.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel41.setText("UF");
        jPanel1.add(jLabel41);
        jLabel41.setBounds(125, 120, 14, 14);

        jLabel42.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel42.setText("Naturalidade");
        jPanel1.add(jLabel42);
        jLabel42.setBounds(785, 20, 80, 14);
        jPanel1.add(jTextField5);
        jTextField5.setBounds(20, 40, 250, 20);
        jPanel1.add(jTextField12);
        jTextField12.setBounds(275, 40, 250, 20);

        jLabel43.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel43.setText("Identificador");
        jPanel1.add(jLabel43);
        jLabel43.setBounds(600, 170, 90, 14);
        jPanel1.add(jTextField14);
        jTextField14.setBounds(530, 40, 250, 20);
        jPanel1.add(jFormattedTextField5);
        jFormattedTextField5.setBounds(20, 90, 120, 20);
        jPanel1.add(jTextField1);
        jTextField1.setBounds(785, 40, 160, 20);
        jPanel1.add(jTextField2);
        jTextField2.setBounds(145, 90, 130, 20);
        jPanel1.add(jTextField3);
        jTextField3.setBounds(280, 90, 70, 20);
        jPanel1.add(jTextField4);
        jTextField4.setBounds(355, 90, 110, 20);
        jPanel1.add(jFormattedTextField1);
        jFormattedTextField1.setBounds(470, 90, 120, 20);
        jPanel1.add(jTextField6);
        jTextField6.setBounds(595, 90, 105, 20);
        jPanel1.add(jTextField7);
        jTextField7.setBounds(705, 90, 90, 20);

        jPanel1.add(jComboBox1);
        jComboBox1.setBounds(800, 90, 40, 20);
        jPanel1.add(jFormattedTextField2);
        jFormattedTextField2.setBounds(845, 90, 100, 20);
        jPanel1.add(jTextField8);
        jTextField8.setBounds(20, 140, 100, 20);

        jPanel1.add(jComboBox2);
        jComboBox2.setBounds(125, 140, 40, 20);

        jPanel1.add(jComboBox3);
        jComboBox3.setBounds(505, 140, 90, 20);
        jPanel1.add(jTextField9);
        jTextField9.setBounds(170, 140, 40, 20);
        jPanel1.add(jTextField10);
        jTextField10.setBounds(215, 140, 50, 20);
        jPanel1.add(jTextField11);
        jTextField11.setBounds(270, 140, 110, 20);
        jPanel1.add(jTextField13);
        jTextField13.setBounds(385, 140, 50, 20);
        jPanel1.add(jTextField15);
        jTextField15.setBounds(440, 140, 60, 20);

        jPanel1.add(jComboBox4);
        jComboBox4.setBounds(600, 140, 90, 20);
        jPanel1.add(jTextField16);
        jTextField16.setBounds(695, 140, 250, 20);

        jPanel1.add(jComboBox5);
        jComboBox5.setBounds(235, 190, 220, 20);

        jPanel1.add(jComboBox6);
        jComboBox6.setBounds(835, 190, 110, 20);
        jPanel1.add(jTextField17);
        jTextField17.setBounds(600, 190, 230, 20);

        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel1.setText("Escolaridade");
        jPanel1.add(jLabel1);
        jLabel1.setBounds(20, 170, 90, 14);

        jPanel1.add(jComboBox7);
        jComboBox7.setBounds(20, 190, 210, 20);

        jLabel44.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jLabel44.setText("Telefone");
        jPanel1.add(jLabel44);
        jLabel44.setBounds(460, 170, 80, 14);
        jPanel1.add(jTextField18);
        jTextField18.setBounds(460, 190, 135, 20);

        jPanel3.add(jPanel1);
        jPanel1.setBounds(0, 0, 960, 410);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, 963, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, 409, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void formComponentResized(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_formComponentResized
        WindowsFunctions.resizePanel(jPanel3, jPanel1);
    }//GEN-LAST:event_formComponentResized

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
        LinkedList<String> fieldValidadeList = validarCampos();
        if (fieldValidadeList.size() == 0) {
            if (idFuncionario == 0) {
                adicionarFuncionario();
            } else {
                editarFuncionario();
            }
        } else {
            JOptionPane.showMessageDialog(null, ValidationFunctions.getValidationMessage(fieldValidadeList), this.getTitle(), JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_jButton1ActionPerformed

    private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton6ActionPerformed
        this.dispose();
    }//GEN-LAST:event_jButton6ActionPerformed
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.ButtonGroup buttonGroup1;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton6;
    private javax.swing.JComboBox jComboBox1;
    private javax.swing.JComboBox jComboBox2;
    private javax.swing.JComboBox jComboBox3;
    private javax.swing.JComboBox jComboBox4;
    private javax.swing.JComboBox jComboBox5;
    private javax.swing.JComboBox jComboBox6;
    private javax.swing.JComboBox jComboBox7;
    private javax.swing.JFormattedTextField jFormattedTextField1;
    private javax.swing.JFormattedTextField jFormattedTextField2;
    private javax.swing.JFormattedTextField jFormattedTextField5;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel18;
    private javax.swing.JLabel jLabel19;
    private javax.swing.JLabel jLabel20;
    private javax.swing.JLabel jLabel21;
    private javax.swing.JLabel jLabel22;
    private javax.swing.JLabel jLabel23;
    private javax.swing.JLabel jLabel24;
    private javax.swing.JLabel jLabel25;
    private javax.swing.JLabel jLabel26;
    private javax.swing.JLabel jLabel27;
    private javax.swing.JLabel jLabel28;
    private javax.swing.JLabel jLabel29;
    private javax.swing.JLabel jLabel30;
    private javax.swing.JLabel jLabel31;
    private javax.swing.JLabel jLabel32;
    private javax.swing.JLabel jLabel33;
    private javax.swing.JLabel jLabel34;
    private javax.swing.JLabel jLabel35;
    private javax.swing.JLabel jLabel36;
    private javax.swing.JLabel jLabel37;
    private javax.swing.JLabel jLabel38;
    private javax.swing.JLabel jLabel39;
    private javax.swing.JLabel jLabel40;
    private javax.swing.JLabel jLabel41;
    private javax.swing.JLabel jLabel42;
    private javax.swing.JLabel jLabel43;
    private javax.swing.JLabel jLabel44;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField10;
    private javax.swing.JTextField jTextField11;
    private javax.swing.JTextField jTextField12;
    private javax.swing.JTextField jTextField13;
    private javax.swing.JTextField jTextField14;
    private javax.swing.JTextField jTextField15;
    private javax.swing.JTextField jTextField16;
    private javax.swing.JTextField jTextField17;
    private javax.swing.JTextField jTextField18;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    private javax.swing.JTextField jTextField4;
    private javax.swing.JTextField jTextField5;
    private javax.swing.JTextField jTextField6;
    private javax.swing.JTextField jTextField7;
    private javax.swing.JTextField jTextField8;
    private javax.swing.JTextField jTextField9;
    // End of variables declaration//GEN-END:variables
}
